package animator.phantom.undo;

/*
    Copyright Janne Liljeblad 2006,2007,2008

    This file is part of Phantom2D.

    Phantom2D is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Phantom2D is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Phantom2D.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.util.Vector;
import animator.phantom.gui.flow.FlowBox;
import animator.phantom.controller.*;
import animator.phantom.renderer.*;
import animator.phantom.renderer.param.*;

//--- Adds node to flow
public class NodeAddUndoEdit extends PhantomUndoableEdit
{
	private RenderNode node;
	private FlowBox box;
	
	public NodeAddUndoEdit( RenderNode node, FlowBox box )
	{
		super();
		this.node = node;
		this.box = box;
	}

	public void undo()
	{
		Vector<RenderNode> vec = new Vector<RenderNode>();
		vec.add( node );

		EditorsController.removeLayers( vec );
		EditorsController.clearKFEditIfNecessery( vec );
		GUIComponents.renderFlowPanel.boxes.remove( box );
		GUIComponents.renderFlowPanel.selectedBoxes.remove( box );
		GUIComponents.renderFlowPanel.lookUpGrid.removeFlowGraphicFromGridInArea( box, box.getArea() );	
		FlowController.deleteRenderNodes( vec );
			
		GUIComponents.renderFlowPanel.repaint();
	}

	public void redo()
	{
		box.setLastDrawToCurrentPos();

		GUIComponents.renderFlowPanel.boxes.add( box );
		GUIComponents.renderFlowPanel.lookUpGrid.addFlowGraphicToGrid( box );
		FlowController.addRenderNode( node );

		GUIComponents.renderFlowPanel.repaint();
	}

}//end class